A peer-to-peer network includes a set of computers interconnected over a computer network. The set of computers is dynamic and scalable in the sense that any computer, called a peer, can be added to or removed from the set of computers. Each computer on the peer-to-peer network implements the same communication protocol through which each computer can request, or respond to a request for, data. Peer-to-peer networks are commonly used to implement shared file systems in which peers share data files, such as music data files, movie data files and application data files. Chunks of files, and copies of them, may be distributed throughout the system.
In a file sharing system using a peer-to-peer network, a requestor peer issues a request for a file, or part of a file, from a provider peer. In some implementations, a centralized index allows requestor peers to identify potential provider peers and issue requests to the provider peers for the file, or part of the file. In implementations without a centralized index, a requestor peer broadcasts messages through the peer-to-peer network. A peer responds as a provider peer if the peer has the requested data; otherwise the peer merely passes on the request to another peer. A peer may cache any requested data that it passes along from the provider peer to the requestor peer if the network topology does not permit the provider peer to transmit the data directly to the requestor peer.
In such a system, each peer is aware of the identity of the requestor peer, the identity of the provider peer that has the requested data, and the identity of the requested data.